Page({
  data: {
    userInfo: {},
    nickLength: 0,
    showTitleSelection: false,
    availableTitles: [
      {
        id: 'title1',
        name: '计算机学霸',
        description: '计算机领域的优秀学生'
      },
      {
        id: 'title2',
        name: '创新达人',
        description: '在创新比赛中获得优异成绩'
      },
      {
        id: 'title3',
        name: '才艺之星',
        description: '在校园才艺比赛中表现突出'
      },
      {
        id: 'title4',
        name: '科研新秀',
        description: '参与科研项目并有突出贡献'
      },
      {
        id: 'title5',
        name: '技术能手',
        description: '具备出色的技术能力'
      }
    ],
    selectedTitleIndex: -1,
    tempSelectedTitle: null
  },
  
  onLoad: function(options) {
    wx.setNavigationBarTitle({
      title: '昵称编辑'
    });
    
    // 获取用户信息
    this.getUserInfo();
  },
  
  getUserInfo: function() {
    try {
      const userInfo = wx.getStorageSync('userInfo') || {
        nickName: 'NAME',
        title: null
      };
      
      this.setData({ 
        userInfo: userInfo,
        nickLength: userInfo.nickName ? userInfo.nickName.length : 0
      });
      
      // 如果用户有头衔，找到对应索引
      if (userInfo.title) {
        const titleIndex = this.data.availableTitles.findIndex(title => title.name === userInfo.title);
        this.setData({ selectedTitleIndex: titleIndex >= 0 ? titleIndex : -1 });
      }
    } catch (e) {
      console.error('获取用户信息失败', e);
    }
  },
  
  // 昵称输入
  onNicknameInput: function(e) {
    const value = e.detail.value;
    this.setData({
      'userInfo.nickName': value,
      nickLength: value.length
    });
  },
  
  // 保存昵称和头衔
  saveNickname: function() {
    const app = getApp();
    const tokenManager = require('../../utils/tokenManager');
    
    // 昵称验证
    if (!this.data.userInfo.nickName || this.data.userInfo.nickName.trim() === '') {
      wx.showToast({
        title: '请输入昵称',
        icon: 'none'
      });
      return;
    }
    
    // 显示加载状态
    wx.showLoading({
      title: '保存中...',
      mask: true
    });
    
    try {
      // 检查是否登录
      if (!tokenManager.isLoggedIn()) {
        wx.hideLoading();
        wx.showToast({
          title: '未登录，无法保存',
          icon: 'none'
        });
        return;
      }
      
      // 获取token
      const token = tokenManager.getAccessToken();
      
      // 准备要更新的数据
      const apiData = {
        nickname: this.data.userInfo.nickName
        // 这里只更新昵称，其他字段保持不变
      };
      
      // 调用API更新用户资料
      app.api.user.updateProfile(token, apiData)
        .then(result => {
          // 获取现有用户信息，进行部分更新
          const existingUserInfo = wx.getStorageSync('userInfo') || {};
          const updatedUserInfo = {
            ...existingUserInfo,
            nickName: this.data.userInfo.nickName,
            title: this.data.userInfo.title
          };
          
          // 保存到本地存储
          wx.setStorageSync('userInfo', updatedUserInfo);
          console.log('昵称已保存到本地存储', updatedUserInfo);
          
          // 隐藏加载提示
          wx.hideLoading();
          
          // 尝试通知上一页面更新数据
          try {
            const pages = getCurrentPages();
            const prevPage = pages[pages.length - 2]; // 获取上一页面
            
            // 如果上一页面存在且有refresh方法，调用它
            if (prevPage && prevPage.onShow) {
              console.log('尝试调用上一页面的onShow方法');
              prevPage.onShow();
            }
          } catch (e) {
            console.error('通知上一页面更新失败', e);
          }
          
          // 显示成功提示
          wx.showToast({
            title: '保存成功',
            icon: 'success',
            duration: 1500,
            success: () => {
              // 延迟返回，让用户看到提示
              setTimeout(() => {
                // 返回上一页
                wx.navigateBack({
                  success: () => {
                    console.log('已返回上一页，昵称更新完成');
                  }
                });
              }, 1500);
            }
          });
        })
        .catch(error => {
          wx.hideLoading();
          console.error('更新昵称失败', error);
          
          wx.showToast({
            title: error.message || '保存失败',
            icon: 'none',
            duration: 2000
          });
        });
    } catch (e) {
      wx.hideLoading();
      console.error('保存用户信息失败', e);
      
      wx.showToast({
        title: '保存失败',
        icon: 'none'
      });
    }
  },
  
  // 获取头衔
  getTitles: function() {
    wx.showModal({
      title: '获取头衔',
      content: '可以通过参加活动、完成任务等方式获取更多头衔。\n\n目前您可以使用系统提供的默认头衔。',
      showCancel: false,
      confirmText: '我知道了'
    });
  },
  
  // 使用头衔
  useTitle: function() {
    this.setData({
      showTitleSelection: true,
      tempSelectedTitle: this.data.selectedTitleIndex
    });
  },
  
  // 选择头衔
  selectTitle: function(e) {
    const index = e.currentTarget.dataset.index;
    this.setData({
      tempSelectedTitle: index
    });
  },
  
  // 取消选择头衔
  cancelTitleSelection: function() {
    this.setData({
      showTitleSelection: false,
      tempSelectedTitle: null
    });
  },
  
  // 确认选择头衔
  confirmTitleSelection: function() {
    const index = this.data.tempSelectedTitle;
    
    this.setData({
      selectedTitleIndex: index,
      showTitleSelection: false
    });
    
    // 设置头衔
    if (index === -1) {
      // 不使用头衔
      this.setData({
        'userInfo.title': null
      });
    } else {
      // 使用选中的头衔
      this.setData({
        'userInfo.title': this.data.availableTitles[index].name
      });
    }
    
    wx.showToast({
      title: index === -1 ? '已移除头衔' : '头衔已应用',
      icon: 'success'
    });
  }
}); 